import type { TableActionType } from '@/components/table';
import type { BasicTableProps } from '@/components/table/src/props';

const key = Symbol('basic-table');

type Instance = TableActionType & {
  getBindValues: ComputedRef<Recordable>;
};

export type RetInstance = Omit<Instance, 'getBindValues'> & {
  getBindValues: ComputedRef<BasicTableProps>;
};

export function createTableContext(instance: Instance) {
  provide(key, instance);
}

export function useTableContext(): RetInstance {
  return inject(key) as RetInstance;
}
